Run with your first code

[1]:
from sympy import init_printing; init_printing()

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all" # display all expression in one cell instead of the last one

Wave Equation

The tensor coefficient matrix in electromagnetic wave equation

\[\mathit{k}\times(\mathit{k}\times \tilde{\mathit{E}}) + k_0^2 \mathbf{\kappa}\cdot \tilde{\mathit{E}}=\mathit{0}\]
\[\begin{split}\left(\begin{bmatrix} -k_z^2 & & k_x k_z \\ & -k_x^2-k_z^2 & \\ k_x k_z & & -k_x^2 \end{bmatrix} + k_0^2 \begin{bmatrix} \kappa_\perp & -j \kappa_\times & \\ j\kappa_\times & \kappa_\perp & \\ & & \kappa_\parallel \end{bmatrix}\right)\cdot \begin{bmatrix} \tilde{E}_x\\ \tilde{E}_y\\ \tilde{E}_z \end{bmatrix} = \begin{bmatrix} 0\\ 0\\ 0 \end{bmatrix}\end{split}\]
\[\begin{split}\mathbf{T}\cdot \begin{bmatrix} \tilde{E}_x\\ \tilde{E}_y\\ \tilde{E}_z \end{bmatrix} = \begin{bmatrix} 0\\ 0\\ 0 \end{bmatrix}\end{split}\]

You can acquire the sympy.Array representation of the above (tensor) matrix coefficients by the WaveEq class’ coeff_matrix() method. For the relevant variable, you can get them by attribute e.g., wave_eq.wave.k[1] means the wave’s \(k_y\) component of \(\vec{k}\) vector.

[9]:
from sinupy import mediums, waves
from sinupy.waves import EM
plasma = mediums.ColdMagnetizedPlasma()     # to specify a kind of metarial
wave_eq = waves.EM.WaveEq(plasma)           # wave eqution
wave = wave_eq.wave
wave_eq.coeff_matrix()                      # get the k parameter of cross part
wave_eq
[9]:
$\displaystyle \left[\begin{matrix}- k_{y }^{2} - k_{z }^{2} + \frac{\kappa_{\perp} \omega_{}^{2}}{c^{2}} & - \frac{i \kappa_{\times} \omega_{}^{2}}{c^{2}} + k_{x } k_{y } & k_{x } k_{z }\\\frac{i \kappa_{\times} \omega_{}^{2}}{c^{2}} + k_{x } k_{y } & - k_{x }^{2} - k_{z }^{2} + \frac{\kappa_{\perp} \omega_{}^{2}}{c^{2}} & k_{y } k_{z }\\k_{x } k_{z } & k_{y } k_{z } & - k_{x }^{2} - k_{y }^{2} + \frac{\kappa_{\parallel} \omega_{}^{2}}{c^{2}}\end{matrix}\right]$
[9]:
$\displaystyle \left[\begin{matrix}k_{y } \left(- E_{x } k_{y } + E_{y } k_{x }\right) - k_{z } \left(E_{x } k_{z } - E_{z } k_{x }\right) & - k_{x } \left(- E_{x } k_{y } + E_{y } k_{x }\right) + k_{z } \left(- E_{y } k_{z } + E_{z } k_{y }\right) & k_{x } \left(E_{x } k_{z } - E_{z } k_{x }\right) - k_{y } \left(- E_{y } k_{z } + E_{z } k_{y }\right)\end{matrix}\right] = \left[\begin{matrix}- \frac{\omega_{}^{2} \left(E_{x } \kappa_{\perp} - i E_{y } \kappa_{\times}\right)}{c^{2}} & - \frac{\omega_{}^{2} \left(i E_{x } \kappa_{\times} + E_{y } \kappa_{\perp}\right)}{c^{2}} & - \frac{E_{z } \kappa_{\parallel} \omega_{}^{2}}{c^{2}}\end{matrix}\right]$

The function sinupy.waves.EM.solve_N2(WaveEq) returns the solutions of \(N^2(\omega, \theta)\), which is usually tedious for hand-deduction.

[3]:
EM.solve_N2(wave_eq)        # solve the eqution
[3]:
$\displaystyle \left[ \frac{- \kappa_{\times}^{2} \sin^{2}{\left(\theta \right)} - \kappa_{\parallel} \kappa_{\perp} \sin^{2}{\left(\theta \right)} + 2 \kappa_{\parallel} \kappa_{\perp} + \kappa_{\perp}^{2} \sin^{2}{\left(\theta \right)} + \sqrt{\kappa_{\times}^{4} \sin^{4}{\left(\theta \right)} - 4 \kappa_{\times}^{2} \kappa_{\parallel}^{2} \sin^{2}{\left(\theta \right)} + 4 \kappa_{\times}^{2} \kappa_{\parallel}^{2} + 2 \kappa_{\times}^{2} \kappa_{\parallel} \kappa_{\perp} \sin^{4}{\left(\theta \right)} - 2 \kappa_{\times}^{2} \kappa_{\perp}^{2} \sin^{4}{\left(\theta \right)} + \kappa_{\parallel}^{2} \kappa_{\perp}^{2} \sin^{4}{\left(\theta \right)} - 2 \kappa_{\parallel} \kappa_{\perp}^{3} \sin^{4}{\left(\theta \right)} + \kappa_{\perp}^{4} \sin^{4}{\left(\theta \right)}}}{2 \left(- \kappa_{\parallel} \sin^{2}{\left(\theta \right)} + \kappa_{\parallel} + \kappa_{\perp} \sin^{2}{\left(\theta \right)}\right)}, \ \frac{\kappa_{\times}^{2} \sin^{2}{\left(\theta \right)} + \kappa_{\parallel} \kappa_{\perp} \sin^{2}{\left(\theta \right)} - 2 \kappa_{\parallel} \kappa_{\perp} - \kappa_{\perp}^{2} \sin^{2}{\left(\theta \right)} + \sqrt{\kappa_{\times}^{4} \sin^{4}{\left(\theta \right)} - 4 \kappa_{\times}^{2} \kappa_{\parallel}^{2} \sin^{2}{\left(\theta \right)} + 4 \kappa_{\times}^{2} \kappa_{\parallel}^{2} + 2 \kappa_{\times}^{2} \kappa_{\parallel} \kappa_{\perp} \sin^{4}{\left(\theta \right)} - 2 \kappa_{\times}^{2} \kappa_{\perp}^{2} \sin^{4}{\left(\theta \right)} + \kappa_{\parallel}^{2} \kappa_{\perp}^{2} \sin^{4}{\left(\theta \right)} - 2 \kappa_{\parallel} \kappa_{\perp}^{3} \sin^{4}{\left(\theta \right)} + \kappa_{\perp}^{4} \sin^{4}{\left(\theta \right)}}}{2 \left(\kappa_{\parallel} \sin^{2}{\left(\theta \right)} - \kappa_{\parallel} - \kappa_{\perp} \sin^{2}{\left(\theta \right)}\right)}\right]$